package cn.edu.tjnu.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import cn.edu.tjnu.dao.ILoginDao;
import cn.edu.tjnu.orm.UsersBean;

public class LoginDaoImpl implements ILoginDao {

	// 需要使用spring的依赖注入 sessionFactory对象
	private SessionFactory sessionFactory;

	@Override
	public List<UsersBean> doLogin(UsersBean userB) {
		// 需要调用hibernate的进行数据查询操作
		// 获取spring管理的sessionFactory bean对象的当前的session
		Session session = sessionFactory.getCurrentSession(); // 注意：此处调用的是
																// getCurrentSession
																// 方法
		// 使用 别名(命名规则 “=:别名 ” ) 占位符进行查询
		String strHQL = "from UsersBean WHERE userLogName =:userLogName and userPsw =:userPsw and userRoleName =:userRoleName";
		// 1、获取query 对象
		Query query = session.createQuery(strHQL);
		// 设置查询hql语句中的参数结果集map
		Map<String,Object> mapParas = new HashMap<String,Object>();
		// 将查询参数放入map集合中
		mapParas.put("userLogName", userB == null ? "" : userB.getUserLogName());
		mapParas.put("userPsw", userB == null ? "" : userB.getUserPsw());
		mapParas.put("userRoleName", userB == null ? "" : userB.getUserRoleName());
		// 将查询参数map设置给query
		query.setProperties(mapParas);

		// 2、获取查询结果
		List<UsersBean> lstUsers = query.list();
		return lstUsers;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

}
